//
// Created by 王书哲 on 25-3-19.
/*
 * const 声明指针对应不同模式
 */
#include <stdio.h>
int main(void)
{
    const float f = 1.0;
    const float f2 = 1.1;
    float f4 = 1.4;
    /*
     * 该指针可以指向 const 或者非 const 的 float 变量
     * 但是通过该指针访问时，会将其视为 const(即不能通过该指针修改值)
     */
    const float * pf;
    pf = &f2;
    printf("f = %f, address: %p \n", *pf, pf);
    pf = &f4;
    printf("f = %f, address: %p \n", *pf, pf);
    f4 = 1.5;
    printf("f = %f, address: %p \n", *pf, pf);
    /*
     * 该指针可以指向 const 或者非 const 的 float 变量
     * 该指针本身不可修改（不能更换指向地址）
     * 只能指向非const的float变量，可通过指针修改目标值
     */
    float f3 = 1.2;
    float * const pf2 = &f3;
    printf("f = %f, address: %p \n", *pf2, pf2);
    f3 = 1.3;
    printf("f = %f, address: %p \n", *pf2, pf2);
    /**
     * 该指针可以指向 const 或者非 const 的 float 变量
     * 通过指针访问时，将视为 const。
     */
    const float * const pf3 = &f3;
    printf("f = %f, address: %p \n", *pf3, pf3);
    return 0;
}
